#pragma once
#include <string>
#include "base/defines.h"
#include <memory>

namespace MAPSDK
{
    class HdMapLayerImpl;

    class HDMapLayer
    {
    public:
        static HDMapLayer& Instance()
        {
            static HDMapLayer singleton;
            return singleton;
        }
        hdmap_frame SearchByRadius(const GeoPoint &gps_point, double radius);
    protected:
        std::vector<hdmap_sign> SearchSignsByRadius(const GeoPoint &gps_point, double radius);
        std::vector<hdmap_lane> SearchLanesByRadius(const GeoPoint &gps_point, double radius);
    private:
        HDMapLayer();
        ~HDMapLayer();
        HdMapLayerImpl* map_layer_impl_;
    };
}